Android Parcelable 和 Serializable
全部标签 一般来说,让简单的POJOJava类实现java.io.Serializable是最佳实践吗? 最佳答案 一般不会。约书亚布洛赫说implementSerializablejudiciously.他描述的缺点总结:降低了以后更改类实现的灵active-序列化形式是类API的一部分更有可能出现一些错误和安全漏洞-攻击者可以访问序列化字节流中的类内部增加了测试负担-现在您必须测试序列化!负担子类的作者——他们也必须使他们的子类可序列化当然,有时您需要一个POJO来实现可序列化,例如RMI,但如果不需要,没有它您的代码会更简单、更安全。
我刚刚开始使用Java序列化,我不清楚在非阻塞I/O的情况下您应该如何从源获取对象。我能找到的所有文档都建议使用ObjectInputStream是读取序列化对象的正确方法。但是,正如我提到的,我正在使用java.nio并执行非阻塞操作。如果readObject()将阻塞直到有新对象可用,这对我没有帮助总结..使用JavaNIO时如何进行序列化? 最佳答案 将序列化实例包装在一个报告有效负载长度的协议(protocol)中,有效负载就是所讨论的实例。然后,一旦您知道您有一个表示完整实例的段,您就可以安全地使用ObjectInputS
我有一个简单的问题,但我找不到JavaEE6的答案!有状态sessionbean是否应该实现Serializable?我在实现和不实现java.io.Serializable的情况下进行了测试,没有任何不同,也没有错误。我的感觉告诉我,有状态sessionbean必须实现可序列化,因为它可以在长期session中保持... 最佳答案 不,它不需要,因为规范没有要求。您可以从以下位置下载和检查EJB规范:https://jcp.org/en/jsr/detail?id=318 关于java
如果我不包含“implementsSerializable”会怎样?publicclassStudentimplementsSerializable{privateStringstudentNumber;privateStringfirstName;privateStringlastName;privateArrayListexams;} 最佳答案 然后Student将表现得像一个普通类,即您将无法在任何地方存储Student对象的状态通过这个:https://docs.oracle.com/javase/tutorial/jndi
我需要为我的分布式系统类开发一个JavaRMI应用程序。在讲座中,教授强调只让类实现必须通过网络按值传递的Serializable。这意味着让太多的类实现Serializable会带来一些负面影响或惩罚。不需要通过网络发送的类。我看不出有什么缺点,因为如果您从未真正通过网络发送序列化/反序列化就永远不会发生。 最佳答案 onlyletclassesimplementSerializablethathavetobepassedbyvalueoverthenetwork.您的教授建议您尽量减少使用Serializable到严格需要它的地
假设我有类MyClass的版本,其中我有两个字段intcount和Stringname。而且我已经将字节流保存到文件中。在我从类中删除属性name之后,持久字节流也被毫无问题地转换为对象。但根据Serializable文档添加新属性是兼容的更改,但删除属性是不兼容的更改w.r.t.序列化。我很困惑有人可以帮助我理解这一点。谢谢!!!!!! 最佳答案 几点:当一个对象被反序列化时,任何在字节流中不的字段都将被初始化为null。因此,当您添加一个新字段时,当一个新版本对象从旧版本字节流反序列化时,新字段将被初始化为null。如果null
这个问题在这里已经有了答案:WhyJavaneedsSerializableinterface?(13个答案)关闭9年前。技术上我知道为什么类需要实现可序列化。原因是ObjectOutputStream的writeObject方法在写入对象状态之前在内部检查“可序列化实例”。但我的问题是,这样做有什么必要?writeObject方法可以简单的写出对象的状态无论对象(需要写的状态)是否实现了serializable?根据wiki,类实现此接口(interface)以指示其非transient数据成员可以写入ObjectOutputStream。但同样的问题是为什么类需要实现可序列化来确定
我正在阅读接口(interface)Serializable的文档,我在其中找到以下几行:Toallowsubtypesofnon-serializableclassestobeserialized,thesubtypemayassumeresponsibilityforsavingandrestoringthestateofthesupertype'spublic,protected,and(ifaccessible)packagefields.Thesubtypemayassumethisresponsibilityonlyiftheclassitextendshasanacces
scala@Serializable的Action方式与JavaSerializable不同吗?我的意思是序列化对象的方式还是两者都使用相同的标准序列化? 最佳答案 Scala可以编译为JVM字节码,所以唯一的区别在于Scala如何实现这种转换。Scala在类型检查期间将注解转换为接口(interface),这可能会导致一些微妙的问题seehere.无论如何,Afaik@Serializable已被弃用-与scala中的其他注释(volatile注释而不是说明符)相比,我无论如何看不到太多优势..不会使代码更清晰或更简单。
这个问题在这里已经有了答案:AlthoughtheSerializableinterfaceinJavahasnomethods,nofields,itcanachieveitsfunction.How?(6个答案)关闭7年前。我知道什么是序列化以及为什么要使用它,但我的问题是:为什么序列化是标记接口(interface)?在Serializable接口(interface)中没有writeObject、readObject的潜在好处是什么,因为当我们进行序列化时,我们最终会重写这两个方法?readResolve如何保证反序列化时创建的对象不是新对象。我知道下面的内容,它在反序列化期间